core: Fix a few memory leaks
authorColin Walters <walters@verbum.org>
Mon, 2 Apr 2012 21:41:04 +0000 (17:41 -0400)
committerColin Walters <walters@verbum.org>
Mon, 2 Apr 2012 22:32:40 +0000 (18:32 -0400)
src/libostree/ostree-core.c
src/libostree/ostree-repo.c

index 7d6849a619d796f7ec50fc6f28b1809333adbf69..06897a2c20c61810d3e25b395694508ab7a7ef84 100644 (file)
@@ -1289,6 +1289,7 @@ ostree_read_pack_entry_raw (guchar        *pack_data,
   ret_entry = g_variant_new_from_data (OSTREE_PACK_FILE_CONTENT_VARIANT_FORMAT,
                                        pack_data+entry_start, entry_len,
                                        trusted, NULL, NULL);
+  g_variant_ref_sink (ret_entry);
   ret = TRUE;
   ot_transfer_out_value (out_entry, &ret_entry);
  out:
@@ -1324,6 +1325,7 @@ ostree_read_pack_entry_as_stream (GVariant *pack_entry)
                                                "base-stream", memory_input,
                                                "close-base-stream", TRUE,
                                                NULL);
+      g_object_unref (memory_input);
       g_object_unref (decompressor);
     }
   else
@@ -1355,8 +1357,6 @@ ostree_read_pack_entry_variant (GVariant            *pack_entry,
                                     trusted, &container_variant, cancellable, error))
     goto out;
 
-  g_variant_ref_sink (container_variant);
-
   g_variant_get (container_variant, "(uv)",
                  &actual_type, &ret_variant);
   actual_type = GUINT32_FROM_BE (actual_type);
index aeb7346b199e6c6bdcae6f07c598ed9a4e5d0c52..8ea4bbda4886579725946aecae73c9bb51bbd22b 100644 (file)
@@ -3298,6 +3298,7 @@ ostree_repo_load_file (OstreeRepo         *self,
  out:
   g_free (content_pack_checksum);
   g_clear_object (&ret_input);
+  g_clear_object (&content_loose_path);
   g_clear_object (&content_loose_info);
   g_clear_object (&ret_file_info);
   ot_clear_gvariant (&ret_xattrs);
@@ -3371,9 +3372,8 @@ list_objects_in_index (OstreeRepo                     *self,
       g_variant_builder_add (&pack_contents_builder, "s", pack_checksum);
       objdata = g_variant_new ("(b@as)", is_loose,
                                g_variant_builder_end (&pack_contents_builder));
-      g_hash_table_replace (inout_objects,
-                            obj_key,
-                            g_variant_ref (objdata));
+      g_variant_ref_sink (objdata);
+      g_hash_table_replace (inout_objects, obj_key, objdata);
     }
 
   ret = TRUE;